性能优化所需要具备的,是把观察到的性能问题跟系统原理关联起来,特别是把系统从应用程序、库函数、系统调用、再到内核和硬件等不同的层级贯穿起来。
流量高峰期,服务器 CPU 使用率过高报警,你登录 Linux 上去 top 完之后,却不知道怎么进一步定位,到底是系统 CPU 资源太少,还是程序并发部分写的有问题?
系统并没有跑什么吃内存的程序,但是敲完 free 命令之后,却发现系统已经没有什么内存了,那到底是哪里占用了内存?为什么?
一大早就收到 Zabbix 告警,你发现某台存放监控数据的数据库主机的 iowait 较高,这个时候该怎么办?
程序涉及
算法分析
编程语言
系统、存储、网络等各种底层基础设施
带着问题学习:从实际问题场景切入而非理论学习
学会抓重点:从常见系统组件的基本原理与协作方式入手,运用基本的性能指标分析工具,反过来思考性能瓶颈产生的原因以及如何调优
选择指标评估应用程序和系统的性能
为应用程序和系统设置性能目标
进行性能基准测试
性能分析定位瓶颈
优化系统和应用程序
性能监控和告警
总结:选指标→定目标→测基线→找瓶颈→搞优化→上监控
附:Brendan Gregg 的 Linux 性能工具图谱:

附:性能优化分析思维导图
